package Tests;

import java.util.Vector;

import junit.framework.TestCase;

import server.GestoreGioco;
import server.ambienteGioco.Acqua;
import server.ambienteGioco.Mappa;
import server.ambienteGioco.TerraConCarogna;
import server.ambienteGioco.TerraConVegetazione;
import server.ambienteGioco.TerraSemplice;
import server.ambienteGioco.Zona;
import server.dinosauri.Carnivoro;
import server.dinosauri.Erbivoro;

public class TestPosizionamentoElementi extends TestCase {
	private Mappa map;
	GestoreGioco gest;
	
	public void setUp() {
		gest=GestoreGioco.instance(1999);
		map = Mappa.instance("Mappa.txt");
	}
	
	public void testPosizionaDinosauro(){
		Vector<Integer>  v1 = new Vector<Integer>();
		Vector<Integer>  v2 = new Vector<Integer>();
		Vector<Integer>  v3 = new Vector<Integer>();
		
		Vector<Integer> posiz = new Vector<Integer>();
		
		v1.addAll(v2);
		v1.addAll(v3);
		
		for(int i=0;i<20;i++){
			new Carnivoro();
			new Erbivoro();
		}
		
		for(int i=0; i<Mappa.LARGHEZZA_MAPPA; i++){
			for(int j=0; j<Mappa.LARGHEZZA_MAPPA; j++){
				if(map.getDinosauroAt(i, j)!=null) {
					posiz.add(map.hash(i,j));
					v1.addAll(map.visualeDinosauro(map.getDinosauroAt(i, j)));
				}
			}
		}
		
		for(int i=0; i<Mappa.LARGHEZZA_MAPPA; i++){
			for(int j=0; j<Mappa.LARGHEZZA_MAPPA; j++){
				if(posiz.contains(map.hash(i,j)))
					System.out.print("?");
				else {
					if(v1.contains(map.hash(i,j))){
						if(map.getZonaAt(i, j) instanceof TerraSemplice)     System.out.print("T");
						if(map.getZonaAt(i, j) instanceof Acqua) System.out.print("A");
						if(map.getZonaAt(i, j) instanceof TerraConCarogna) System.out.print("C");
						if(map.getZonaAt(i, j) instanceof TerraConVegetazione) System.out.print("V");
					}	
					if(!(v1.contains(map.hash(i,j))))
						System.out.print("O");
				}
			}
			System.out.println("");
		}
		System.out.println("");
		System.out.println("");
		System.out.println("");
		System.out.println("");
		Carnivoro a = new Carnivoro();
		v1.addAll(map.visualeDinosauro(a));
		@SuppressWarnings("unused")
		Carnivoro b = new Carnivoro();
		@SuppressWarnings("unused")
		Carnivoro c = new Carnivoro();
		Carnivoro nuovo=new Carnivoro(a.getSpecie(),map,a);
		v1.addAll(map.visualeDinosauro(nuovo));
		
		
		for(int i=0; i<Mappa.LARGHEZZA_MAPPA; i++){
			for(int j=0; j<Mappa.LARGHEZZA_MAPPA; j++){
				
				if(posiz.contains(map.hash(i,j)))
					System.out.print("?");
				else if(map.getDinosauroAt(i, j)==nuovo) System.out.print("^");
				else if(map.getDinosauroAt(i, j)==a) System.out.print("*");
				else {
					if(v1.contains(map.hash(i,j))){
						if(map.getZonaAt(i, j) instanceof TerraSemplice)     System.out.print("T");
						if(map.getZonaAt(i, j) instanceof Acqua) System.out.print("A");
						if(map.getZonaAt(i, j) instanceof TerraConCarogna) System.out.print("C");
						if(map.getZonaAt(i, j) instanceof TerraConVegetazione) System.out.print("V");
					}
						
					if(!(v1.contains(map.hash(i,j))))
						System.out.print("O");
				}
			}
			System.out.println("");
		}
		
		System.out.println("");
		System.out.println("");
		System.out.println("");
		System.out.println("");
		
		Zona zona=Mappa.posizionaCarogna();
		for(int i=0; i<Mappa.LARGHEZZA_MAPPA; i++){
			for(int j=0; j<Mappa.LARGHEZZA_MAPPA; j++){
				if(map.getZonaAt(i, j) == zona) System.out.print("]");
				else{
				if(posiz.contains(map.hash(i,j)))
					System.out.print("?");
				
				else {
					if(v1.contains(map.hash(i,j))){
						if(map.getZonaAt(i, j) instanceof TerraSemplice)     System.out.print("T");
						if(map.getZonaAt(i, j) instanceof Acqua) System.out.print("A");
						if(map.getZonaAt(i, j) instanceof TerraConCarogna) System.out.print("C");
						if(map.getZonaAt(i, j) instanceof TerraConVegetazione) System.out.print("V");
					}
						
					if(!(v1.contains(map.hash(i,j))))
						System.out.print("O");
				}
				}
			}
			System.out.println("");
		}
		
	}
	
	

}
